home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ppppaaaacccckkkk((((nnnn)))) TTTTkkkk (((( )))) ppppaaaacccckkkk((((nnnn))))
-
-
-
- _________________________________________________________________
-
- NNNNAAAAMMMMEEEE
- pack - Geometry manager that packs around edges of cavity
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ppppaaaacccckkkk _o_p_t_i_o_n _a_r_g ?_a_r_g ...?
- _________________________________________________________________
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- The ppppaaaacccckkkk command is used to communicate with the packer, a
- geometry manager that arranges the children of a parent by
- packing them in order around the edges of the parent. The
- ppppaaaacccckkkk command can have any of several forms, depending on the
- _o_p_t_i_o_n argument:
-
- ppppaaaacccckkkk _s_l_a_v_e ?_s_l_a_v_e ...? ?_o_p_t_i_o_n_s?
- If the first argument to ppppaaaacccckkkk is a window name (any
- value starting with ``.''), then the command is
- processed in the same way as ppppaaaacccckkkk ccccoooonnnnffffiiiigggguuuurrrreeee.
-
- ppppaaaacccckkkk ccccoooonnnnffffiiiigggguuuurrrreeee _s_l_a_v_e ?_s_l_a_v_e ...? ?_o_p_t_i_o_n_s?
- The arguments consist of the names of one or more slave
- windows followed by pairs of arguments that specify how
- to manage the slaves. See ``THE PACKER ALGORITHM''
- below for details on how the options are used by the
- packer. The following options are supported:
-
- ----aaaafffftttteeeerrrr _o_t_h_e_r
- _O_t_h_e_r must the name of another window. Use its
- master as the master for the slaves, and insert
- the slaves just after _o_t_h_e_r in the packing order.
-
- ----aaaannnncccchhhhoooorrrr _a_n_c_h_o_r
- _A_n_c_h_o_r must be a valid anchor position such as nnnn
- or sssswwww; it specifies where to position each slave
- in its parcel. Defaults to cccceeeennnntttteeeerrrr.
-
- ----bbbbeeeeffffoooorrrreeee _o_t_h_e_r
- _O_t_h_e_r must the name of another window. Use its
- master as the master for the slaves, and insert
- the slaves just before _o_t_h_e_r in the packing order.
-
- ----eeeexxxxppppaaaannnndddd _b_o_o_l_e_a_n
- Specifies whether the slaves should be expanded to
- consume extra space in their master. _B_o_o_l_e_a_n may
- have any proper boolean value, such as 1111 or nnnnoooo.
- Defaults to 0.
-
- ----ffffiiiillllllll _s_t_y_l_e
- If a slave's parcel is larger than its requested
-
-
-
- Page 1 (printed 7/23/95)
-
-
-
-
-
-
- ppppaaaacccckkkk((((nnnn)))) TTTTkkkk (((( )))) ppppaaaacccckkkk((((nnnn))))
-
-
-
- dimensions, this option may be used to stretch the
- slave. _S_t_y_l_e must have one of the following
- values:
-
- nnnnoooonnnneeee Give the slave its requested dimensions plus
- any internal padding requested with ----iiiippppaaaaddddxxxx or
- ----iiiippppaaaaddddyyyy. This is the default.
-
- xxxx Stretch the slave horizontally to fill the
- entire width of its parcel (except leave
- external padding as specified by ----ppppaaaaddddxxxx).
-
- yyyy Stretch the slave vertically to fill the
- entire height of its parcel (except leave
- external padding as specified by ----ppppaaaaddddyyyy).
-
- bbbbooootttthhhh Stretch the slave both horizontally and
- vertically.
-
- ----iiiinnnn _o_t_h_e_r
- Insert the slave(s) at the end of the packing
- order for the master window given by _o_t_h_e_r.
-
- ----iiiippppaaaaddddxxxx _a_m_o_u_n_t
- _A_m_o_u_n_t specifies how much horizontal internal
- padding to leave on each side of the slave(s).
- _A_m_o_u_n_t must be a valid screen distance, such as 2222
- or ....5555cccc. It defaults to 0.
-
- ----iiiippppaaaaddddyyyy _a_m_o_u_n_t
- _A_m_o_u_n_t specifies how much vertical internal
- padding to leave on each side of the slave(s).
- _A_m_o_u_n_t defaults to 0.
-
- ----ppppaaaaddddxxxx _a_m_o_u_n_t
- _A_m_o_u_n_t specifies how much horizontal external
- padding to leave on each side of the slave(s).
- _A_m_o_u_n_t defaults to 0.
-
- ----ppppaaaaddddyyyy _a_m_o_u_n_t
- _A_m_o_u_n_t specifies how much vertical external
- padding to leave on each side of the slave(s).
- _A_m_o_u_n_t defaults to 0.
-
- ----ssssiiiiddddeeee _s_i_d_e
- Specifies which side of the master the slave(s)
- will be packed against. Must be lllleeeefffftttt, rrrriiiigggghhhhtttt, ttttoooopppp,
- or bbbboooottttttttoooommmm. Defaults to ttttoooopppp.
-
- If no ----iiiinnnn, ----aaaafffftttteeeerrrr or ----bbbbeeeeffffoooorrrreeee option is specified then
- each of the slaves will be inserted at the end of the
- packing list for its parent unless it is already
-
-
-
- Page 2 (printed 7/23/95)
-
-
-
-
-
-
- ppppaaaacccckkkk((((nnnn)))) TTTTkkkk (((( )))) ppppaaaacccckkkk((((nnnn))))
-
-
-
- managed by the packer (in which case it will be left
- where it is). If one of these options is specified
- then all the slaves will be inserted at the specified
- point. If any of the slaves are already managed by the
- geometry manager then any unspecified options for them
- retain their previous values rather than receiving
- default values.
-
- ppppaaaacccckkkk ffffoooorrrrggggeeeetttt _s_l_a_v_e ?_s_l_a_v_e ...?
- Removes each of the _s_l_a_v_es from the packing order for
- its master and unmaps their windows. The slaves will
- no longer be managed by the packer.
-
- ppppaaaacccckkkk nnnneeeewwwwiiiinnnnffffoooo _s_l_a_v_e
- Returns a list whose elements are the current
- configuration state of the slave given by _s_l_a_v_e in the
- same option-value form that might be specified to ppppaaaacccckkkk
- ccccoooonnnnffffiiiigggguuuurrrreeee. The first two elements of the list are
- ``----iiiinnnn _m_a_s_t_e_r'' where _m_a_s_t_e_r is the slave's master.
- Starting with Tk 4.0 this option will be renamed "pack
- info".
-
- ppppaaaacccckkkk pppprrrrooooppppaaaaggggaaaatttteeee _m_a_s_t_e_r ?_b_o_o_l_e_a_n?
- If _b_o_o_l_e_a_n has a true boolean value such as 1111 or oooonnnn
- then propagation is enabled for _m_a_s_t_e_r, which must be a
- window name (see ``GEOMETRY PROPAGATION'' below). If
- _b_o_o_l_e_a_n has a false boolean value then propagation is
- disabled for _m_a_s_t_e_r. In either of these cases an empty
- string is returned. If _b_o_o_l_e_a_n is omitted then the
- command returns 0000 or 1111 to indicate whether propagation
- is currently enabled for _m_a_s_t_e_r. Propagation is
- enabled by default.
-
- ppppaaaacccckkkk ssssllllaaaavvvveeeessss _m_a_s_t_e_r
- Returns a list of all of the slaves in the packing
- order for _m_a_s_t_e_r. The order of the slaves in the list
- is the same as their order in the packing order. If
- _m_a_s_t_e_r has no slaves then an empty string is returned.
-
-
- TTTTHHHHEEEE PPPPAAAACCCCKKKKEEEERRRR AAAALLLLGGGGOOOORRRRIIIITTTTHHHHMMMM
- For each master the packer maintains an ordered list of
- slaves called the _p_a_c_k_i_n_g _l_i_s_t. The ----iiiinnnn, ----aaaafffftttteeeerrrr, and
- ----bbbbeeeeffffoooorrrreeee configuration options are used to specify the master
- for each slave and the slave's position in the packing list.
- If none of these options is given for a slave then the slave
- is added to the end of the packing list for its parent.
-
- The packer arranges the slaves for a master by scanning the
- packing list in order. At the time it processes each slave,
- a rectangular area within the master is still unallocated.
- This area is called the _c_a_v_i_t_y; for the first slave it is
-
-
-
- Page 3 (printed 7/23/95)
-
-
-
-
-
-
- ppppaaaacccckkkk((((nnnn)))) TTTTkkkk (((( )))) ppppaaaacccckkkk((((nnnn))))
-
-
-
- the entire area of the master.
-
- For each slave the packer carries out the following steps:
-
- [1] The packer allocates a rectangular _p_a_r_c_e_l for the slave
- along the side of the cavity given by the slave's ----ssssiiiiddddeeee
- option. If the side is top or bottom then the width of
- the parcel is the width of the cavity and its height is
- the requested height of the slave plus the ----iiiippppaaaaddddyyyy and
- ----ppppaaaaddddyyyy options. For the left or right side the height
- of the parcel is the height of the cavity and the width
- is the requested width of the slave plus the ----iiiippppaaaaddddxxxx and
- ----ppppaaaaddddxxxx options. The parcel may be enlarged further
- because of the ----eeeexxxxppppaaaannnndddd option (see ``EXPANSION'' below)
-
- [2] The packer chooses the dimensions of the slave. The
- width will normally be the slave's requested width plus
- twice its ----iiiippppaaaaddddxxxx option and the height will normally be
- the slave's requested height plus twice its ----iiiippppaaaaddddyyyy
- option. However, if the ----ffffiiiillllllll option is xxxx or bbbbooootttthhhh then
- the width of the slave is expanded to fill the width of
- the parcel, minus twice the ----ppppaaaaddddxxxx option. If the ----ffffiiiillllllll
- option is yyyy or bbbbooootttthhhh then the height of the slave is
- expanded to fill the width of the parcel, minus twice
- the ----ppppaaaaddddyyyy option.
-
- [3] The packer positions the slave over its parcel. If the
- slave is smaller than the parcel then the ----aaaannnncccchhhhoooorrrr
- option determines where in the parcel the slave will be
- placed. If ----ppppaaaaddddxxxx or ----ppppaaaaddddyyyy is non-zero, then the given
- amount of external padding will always be left between
- the slave and the edges of the parcel.
-
- Once a given slave has been packed, the area of its parcel
- is subtracted from the cavity, leaving a smaller rectangular
- cavity for the next slave. If a slave doesn't use all of
- its parcel, the unused space in the parcel will not be used
- by subsequent slaves. If the cavity should become too small
- to meet the needs of a slave then the slave will be given
- whatever space is left in the cavity. If the cavity shrinks
- to zero size, then all remaining slaves on the packing list
- will be unmapped from the screen until the master window
- becomes large enough to hold them again.
-
-
- EEEEXXXXPPPPAAAANNNNSSSSIIIIOOOONNNN
- If a master window is so large that there will be extra
- space left over after all of its slaves have been packed,
- then the extra space is distributed uniformly among all of
- the slaves for which the ----eeeexxxxppppaaaannnndddd option is set. Extra
- horizontal space is distributed among the expandable slaves
- whose ----ssssiiiiddddeeee is lllleeeefffftttt or rrrriiiigggghhhhtttt, and extra vertical space is
-
-
-
- Page 4 (printed 7/23/95)
-
-
-
-
-
-
- ppppaaaacccckkkk((((nnnn)))) TTTTkkkk (((( )))) ppppaaaacccckkkk((((nnnn))))
-
-
-
- distributed among the expandable slaves whose ----ssssiiiiddddeeee is ttttoooopppp
- or bbbboooottttttttoooommmm.
-
-
- GGGGEEEEOOOOMMMMEEEETTTTRRRRYYYY PPPPRRRROOOOPPPPAAAAGGGGAAAATTTTIIIIOOOONNNN
- The packer normally computes how large a master must be to
- just exactly meet the needs of its slaves, and it sets the
- requested width and height of the master to these
- dimensions. This causes geometry information to propagate
- up through a window hierarchy to a top-level window so that
- the entire sub-tree sizes itself to fit the needs of the
- leaf windows. However, the ppppaaaacccckkkk pppprrrrooooppppaaaaggggaaaatttteeee command may be
- used to turn off propagation for one or more masters. If
- propagation is disabled then the packer will not set the
- requested width and height of the packer. This may be
- useful if, for example, you wish for a master window to have
- a fixed size that you specify.
-
-
- RRRREEEESSSSTTTTRRRRIIIICCCCTTTTIIIIOOOONNNNSSSS OOOONNNN MMMMAAAASSSSTTTTEEEERRRR WWWWIIIINNNNDDDDOOOOWWWWSSSS
- The master for each slave must either be the slave's parent
- (the default) or a descendant of the slave's parent. This
- restriction is necessary to guarantee that the slave can be
- placed over any part of its master that is visible without
- danger of the slave being clipped by its parent.
-
-
- PPPPAAAACCCCKKKKIIIINNNNGGGG OOOORRRRDDDDEEEERRRR
- If the master for a slave is not its parent then you must
- make sure that the slave is higher in the stacking order
- than the master. Otherwise the master will obscure the
- slave and it will appear as if the slave hasn't been packed
- correctly. The easiest way to make sure the slave is higher
- than the master is to create the master window first: the
- most recently created window will be highest in the stacking
- order. Or, you can use the rrrraaaaiiiisssseeee and lllloooowwwweeeerrrr commands to
- change the stacking order of either the master or the slave.
-
-
- KKKKEEEEYYYYWWWWOOOORRRRDDDDSSSS
- geometry manager, location, packer, parcel, propagation,
- size
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 5 (printed 7/23/95)
-
-
-
-